class MinStack {
    public:
        MinStack() {

        }
            
                void push(int val) {
                              data.push(val);
                                      if (min.empty() || val<= min.top())
                                                  {
                                                                  min.push(val);
                                                  }
                }
                    
                        void pop() {
                                    if (data.top() == min.top()){
                                                    min.pop();
                                    }
                                             data.pop();
                        }
                            
                                int top() {
                                    return data.top();
                                }
                                    
                                        int getMin() {
                                            return min.top();
                                        }
                                            stack<int> data;
                                                stack<int> min;
};
                            